Storage device

ABSTRACT

A nonvolatile memory is configured with blocks as deletion units, each block having several pages that are configured as write units. A controller for the nonvolatile memory includes an error correcting circuit, which detects and corrects an error in data read out of a page in one of the blocks of the nonvolatile memory, the page being referenced by a logical address. The controller also determines an error occurrence when the error cannot be corrected. An error block table is provided to store the logical address where the error occurred, and a physical address corresponding to the logical address.

CROSS-REFERENCE TO RELATED APPLICATION

This application is based upon and claims the benefit of priority fromJapanese Patent Application No. 2012-033313, filed Feb. 17, 2012; theoverall contents of which are incorporated herein by reference.

FIELD

Embodiments described herein relate to a storage device, in which anonvolatile memory is implemented.

BACKGROUND

In storage devices in which a nonvolatile memory (for example, NAND typeflash memory) is implemented, for example, in memory cards such as SD(Secure Digital) card, it is generally assumed that a bit error mayoccur.

For example, in the NAND type flash memory, an error may be generated bydata contamination (data retention), which is caused by electrons storedin a floating gate that escape naturally or by data contamination (readdisturbance) due to the stress of repetition, etc., of reading of thesame block. For this reason, it is common, when using flash memory, tocorrect such bit errors by an error correction technique using an ECC(error checking and correction) circuit.

Although the correctability of the ECC circuit depends upon thealgorithm of the ECC, the bit error can be completely corrected so longas the bit error is within a correctable range of the algorithm.

On the other hand, when the bit error exceeds the correctable range ofthe algorithm, the ECC circuit cannot completely correct the bit error,and a controller for the memory unit is notified of the occurrence ofthe error. In such a case, the memory unit cannot output correct databut notifies a host device of the occurrence of the error. Hereinafter,the error notified from the ECC circuit after the occurrence of anuncorrectable error in the ECC circuit will be referred to as an ECCerror.

When bit errors are severe enough to cause ECC errors, various problemsmay be the cause and should be investigated. For example, there may be aproblem with data retention or read disturbance (this is a NAND memorycell problem due to a process during the manufacture), or a problem withthe firmware for controlling the NAND type flash memory, or there may bea problem due to an access pattern of the host device, or the NAND typeflash memory may have reached end of life.

Sometimes, it is necessary to investigate the cause of the occurrence ofthe ECC error, in which case a physical block in the NAND type flashmemory in which the ECC error has occurred is required to be known. Incase the physical block associated with the ECC error is the physicalblock in which the ECC error has occurred initially, it is easy toidentify the physical block.

However, in some instances, the physical block associated with the ECCerror is copied to another physical block as part of a backgroundprocess, depending upon the algorithm of firmware that is implemented bythe controller. Consequently, in such cases, the physical blockassociated with the ECC error is no longer the physical block in whichthe ECC error initially occurred.

For example, in the case where the ECC error has occurred in the data ofan address written in a certain physical block, when additional data arewritten in the same physical block in portions of the physical blockother than the physical address at which the ECC error has occurred, theadditional data are not written to that physical block. Instead, theadditional data and the data in which the ECC error has occurred arewritten to a new physical block, due to the characteristics of NAND typeflash memory. Thus, data in which the ECC error has occurred are copiedfrom the original physical block to the new physical block. Next, aftercopying the data in which the ECC error has occurred to the new physicalblock and writing the new data to the new physical block, a tableshowing the correlation between logical addresses and physical addressesis updated accordingly.

In this case, since the correlation of the logical address and thephysical block in which the ECC error has actually occurred isoverwritten, it is difficult to identify the physical block in which theECC error has actually occurred.

A technique for registering/managing the physical block has beenproposed when an ECC error has occurred; however when the ECC erroroccurs in reading a specific block of the NAND type flash memory, theblock is the only block that is undergoing such registration/management.For this reason, if another physical block is copied in a backgroundprocess and the physical block is changed, it is still not possible toidentify the physical block in which the ECC error has actuallyoccurred.

DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram showing the configuration of a memory card ofa first embodiment.

FIG. 2 shows a storage area in a NAND type flash memory of the firstembodiment.

FIG. 3 shows a background process that is implemented in the NAND typeflash memory of the first embodiment.

FIG. 4 shows the configuration of an error block table in the firstembodiment.

FIG. 5 is a flow chart showing the case in which addresses areregistered in an error block table in the first embodiment.

FIG. 6 is another flow chart showing the case in which addresses areregistered in the error block table in the first embodiment.

FIG. 7 shows another configuration of the error block table in the firstembodiment.

FIG. 8 shows the configuration of a page prepared in a memory card of asecond embodiment.

FIG. 9 is a flow chart showing the case in which addresses areregistered in the page in the second embodiment.

FIG. 10 is another flow chart showing the case in which addresses areregistered in the page in the second embodiment.

DETAILED DESCRIPTION

In general, embodiments will be explained with reference to the FIGS.Here, as the storage device, a memory card such as an SD card in which anonvolatile memory such as NAND type flash memory is mounted is adoptedas an example. In the following embodiments, without being limited tothe SD card, storage devices provided with other nonvolatile memories,for example, multimedia card, USB flash memory, SSD (solid state drive),etc., can also be applied. In the following explanation, the samesymbols will be given to constituent elements with the same functionsand configurations, and their overlapping explanation will be carriedout, only if necessary.

According to the embodiments, there is provided a storage device thatidentifies a physical block in which an error has actually occurred,even when data that caused the ECC error have been copied to a differentphysical block.

In one embodiment, the storage device is provided with a nonvolatilememory and a controller for controlling the nonvolatile memory, and thenonvolatile memory includes several blocks as deletion units, where eachblock has several pages as write units. The controller is provided withan error correcting circuit, which detects and corrects an error fordata read out of the block of the nonvolatile memory designated by alogical address and notifies the controller of an error occurrence whenthe error cannot be corrected, and a processing circuit for controllingthe operations of the error correcting circuit and the nonvolatilememory. When the notification of the error occurrence is received fromthe error correcting circuit, the processing circuit generates an errorblock table in which the logical address where the error occurred and aphysical address corresponding to the logical address, are registered.

(Embodiment 1)

In a first embodiment, an error block table is managed with system datathat are in firmware for controlling a memory card. The error blocktable contains a logical block, in which an ECC error has occurred, anda physical block corresponding to the logical block. The error blocktable facilitates identification of the physical block in which theerror has occurred.

FIG. 1 is a block diagram showing the overall configuration of thememory card of the first embodiment.

As shown in FIG. 1, the memory card 1 includes a nonvolatile memory as adevice for storing data, for example, a NAND type flash memory 10, and amemory controller 20 for controlling the memory. The memory controller20 is provided with a processing circuit such as microprocessing unit(MPU) 21, read-only memory (ROM) 22, random access memory (RAM) 23, databuffer 24, error correcting circuit such as error checking andcorrection (ECC) circuit 25, host interface (host I/F) 26, and NANDinterface (NAND I/F) 27. The memory card 1 is loaded into a host device2 and implements a processing corresponding to the access from the hostdevice 2.

The firmware as a control program of the memory controller 20 isrecorded in the ROM 22 or NAND type flash memory 10 in the controller20, read out, and utilized.

The MPU 21 controls write, readout, and deletion operations on thememory controller 20 based on the firmware. The ROM 22 is a memory forstoring control programs that are used in the MPU 21. The RAM 23 is avolatile memory that is used as a work area of the MPU 21 and stores thecontrol programs or various kinds of tables. The data buffer 24 is astorage area for temporarily storing data at the time of write andreadout.

The ECC circuit 25 has the function of rendering an ECC code to the datathat is written. In addition, the ECC circuit 25 has the function ofdetecting an error, correcting the error, and notifying that the dataread out of the NAND type flash memory 10 has an error. In other words,the ECC circuit 25 detects an error on read data, and if an errorexists, the error is corrected. Moreover, if the detected error exceedsa correctable range, the memory controller 20 is notified of theoccurrence of the error.

The host interface 26 implements an interface processing between thememory controller 20 and the host device 2. The NAND interface 27implements an interface for processing between the memory controller 20and the NAND type flash memory.

FIG. 2 outlines a storage area in the NAND type flash memory.

A storage area of the NAND type flash memory 10 in the memory card 1includes user area 11, secure area 12, various kinds of registers 13,and system area 14. The user area 11 stores ordinary data. The securearea 12 stores data with high security. Various kinds of registers 13store various kinds of operation information. The system area 14 storesfirmware or other system data that are implemented in the memorycontroller 20 to control the NAND type flash memory 10.

In general, a logical block address, which is defined by the memorycontroller 20, is used in the data transfer between the host device 2and the memory card 1. This logical block address is mapped one-to-onewith a physical block address as an actual address in the NAND typeflash memory 10. A mapping table (logical transformation table) formapping logical block address and physical block addresses is managed inthe system area 14 in the NAND type flash memory 10. In addition, thephysical block addresses to the logical block addresses are notnecessarily arranged sequentially from 1, and there is a possibilitythat various physical block addresses are allocated in accordance withthe situation.

FIG. 3 shows a state in which mapping changes from a certain physicalblock to another physical block in a background process that isimplemented in the NAND type flash memory 10.

For example, data exist in a page address LA of a certain logical blockA, and this page address is mapped to a page address PA of a physicalblock A.

Here, (1) when writing new data to another page address LB of thelogical block A, and since the NAND type flash memory 10 cannotoverwrite specific pages of a given physical block, it is necessary toprepare a new physical block B and to merge new write data and thepre-existing data.

In the physical block B, first, (2) the data in physical block A beforethe write data is copied from the physical block A. At that time, thedata of the page PA, which have already existed, are also included.Next, for the data read out of the physical block A, the ECC circuit 25may detect an error. If the error detected does not exceed a correctablerange, the ECC circuit 25 corrects the error and generates a new ECCcode based on the data after correcting. This new ECC code and the dataafter correcting are written into the physical block B. If the errordetected exceeds the correctable range, the ECC circuit 25 indicates anECC error and generates a new ECC code based on data containing a biterror. The data containing the new ECC code and the bit error arewritten into the physical block B. At that time, the controller 20 setsa flag to indicate that the ECC error occurred in the past.

Next, (3) the write data are written into a page PD of the physicalblock B. Next, (4) the data in the physical block A after the write datais copied from the physical block A. At that time, the ECC circuit 25 isoperated similarly to the operation explained in (2).

Finally, (5) the mapping of the logical block addresses and the physicalblock addresses is updated, completing the processing. In the example ofFIG. 3, the mapping with the page LA of the logical block A is updatedto the page PC of the physical block B from the page PA of the physicalblock A. Therefore, a physical block address corresponding to a certainlogical block address is changed.

If the physical block containing an ECC error is associated with thepage LA of the logical block A and the page PA of the physical block A,since the physical block in which the ECC error has occurred hasactually changed, it is difficult to identify an actual physical blockcontaining the ECC error. Specifically, when data are copied in the pagePC of the physical block from the page PA of the physical block A, theECC circuit 25 newly generates an ECC code from the data in which theECC error has occurred. For this reason, even if the ECC code is readout of the page PC, the ECC circuit 25 cannot detect the error based onthe ECC code unless a new bit error occurs. At that time, the controller20 can detect from the flag that the ECC error in the data stored in thepage PC occurred in the past. However, since the flag only indicates theexistence of the ECC error, the specific physical block that has causedthe occurrence of the ECC error cannot be identified.

Accordingly, in this embodiment, an error block table is prepared on thesystem area 14 of the NAND type flash memory 10, and a logical blockcontaining an ECC error and a physical block corresponding to thelogical block are managed using that table, so that the physical blockin which the ECC error has actually occurred can be identified.

FIG. 4 shows one embodiment of an error block table for recording ablock in which an ECC error has occurred. In the error block table, alogical block address, at which the ECC error has occurred, and aphysical block address mapped to the logical block address are recordedand managed. In other words, the logical block address, at which the ECCerror has occurred, and the physical block corresponding to the logicalblock address are registered and managed.

FIG. 5 is a flow chart showing the case in which addresses areregistered in the error block table shown in FIG. 4.

First, the controller 20 issues a readout request to the NAND type flashmemory 10 (step S11). Next, it is decided whether or not an ECC erroroccurs in the read (step S12). Specifically, the controller 20 decideswhether or not an uncorrectable error is included in data read out of aselected physical block and whether or not a flag showing that the ECCerror occurred in the past is set among flags which are managed byfirmware for the controller 20. Next, for the case in which theuncorrectable error is included or the case in which the flag is set, itis decided whether the ECC error occurs.

If the ECC error occurs in the data read out of the NAND type flashmemory 10, the controller 20 decides whether or not a logical blockaddress at which the ECC error has occurred is registered in the errorblock table (step S13).

If the same logical block address is not registered in the error blocktable, the logical block address, at which the ECC error has occurred,and its corresponding physical block address are registered in the errorblock table (step S14).

At step S13, if the same logical block address is registered in theerror block table, the controller 20 decides whether or not the ECCerror that occurred is an actual ECC error containing an uncorrectableerror. In other words, when an ECC code is recalculated for the readdata, which correspond to data copied from the physical block containingthe ECC error, and an error is detected, the controller 20 decideswhether or not the data include an uncorrectable error. Next, thecontroller 20 decides, among the flags that are managed by the firmware,whether or not a flag showing that an ECC error occurred in the past, isset. When only the read data include the uncorrectable error (i.e., ECCerror did not occur in the past) is the error decided as an actual ECCerror (step S15).

If the ECC error that occurred is an actual ECC error, similar to thecase in which there is no registration of a logical block address in theerror block table, the logical block address and its correspondingphysical block address are registered in the error block table (stepS14).

On the other hand, if the ECC error that occurred is not an actual ECCerror, the logical block address is not registered, for example, whenthe read data are copied from the physical block containing the ECCerror and that read data does not include a new bit error. The firmwaredecides that the selected physical block includes the ECC error by theflag showing that the ECC error occurred in the past.

The above processing flow is a processing flow when addresses areregistered in the error block table.

In the first embodiment, the error block table in which a logical blockaddress, where an error has occurred, and a physical block addresscorresponding to the logical block address are registered is provided.Thus, when an error has occurred at the time of access to a nonvolatilememory, the physical block in which the error has actually occurred canbe retraced, thereby making it possible to identify the physical block.

In addition, as another process when addresses are registered in theerror block table, all of the logical block addresses and physical blockaddresses, at which an error has occurred, may also be registered in theerror block table.

FIG. 6 is a flow chart showing the case in which all addresses, at whichan error has occurred, are registered in the error block table in thefirst embodiment.

In FIG. 5, if the ECC error is not an actual ECC error, no address hasbeen registered in the error block table, finishing the processing.However, in the process shown in FIG. 6, whether or not an ECC erroroccurs in read data is decided (step S12), and all of the logical blockaddresses, at which the ECC error has occurred, and their correspondingphysical block addresses are registered in the error block table.

Therefore, the registration of all of the logical block address, atwhich the ECC error has occurred, and the physical block addressesrecords the transition of the addresses at which the ECC error hasoccurred. In other words, for the logical block address where the ECCerror has occurred, the history of the physical addresses at which thelogical block addresses have been used, as well as the physical blockaddress containing an actual error as its origin is recorded. If thishistory is interpreted, the occurrence sequence of the error can beconfirmed.

In addition, as shown in FIG. 7, a flag showing whether or not thephysical block maintains an ECC error-occurrence state may also beregistered in the error block table shown in FIG. 4.

When deletion or overwriting is generated, the state of its physicalblock can be changed, although it depends upon the firmware of thecontroller 20. For this reason, for example, the state hold flag showingthe state of a physical block is prepared for 1 byte. When the ECC erroroccurrence state is held, the flag is set to “0x00,” and when the ECCerror occurrence is not held, the flag is set to “0xFF.”

When the initial data are held, the state hold flag is set to “0x00,”and when a write process into the memory card is generated, the physicalblock addresses of the error block table are retrieved. If the samephysical block address has already been registered in the error blocktable, the logical block address to be retrieved, its physical blockaddress, and its state hold flag “0xFF” are newly registered in theerror block table. The reason for this new registration is thatoverwriting is impossible in terms of the characteristics of the NANDtype flash memory.

Each time deletion and write are carried out, as mentioned above, if alogical block address, its physical block address, and its state holdflag are registered in the error block table, the lowest entry of theregistered entry is always updated. For this reason, even if overlappinglogical block addresses and physical block addresses exist, the newestregistration information can be decided. Since the state hold flag isprepared in the error block table, whether or not data of thecorresponding physical block are stored is understood, thus being usefulfor the interpretation of the physical block in which the error hasoccurred.

According to the first embodiment, an error block table is prepared, anda logical address and a physical address corresponding to the logicaladdress are managed by the error block table, thus being able toidentify the physical block in which an ECC error has actually occurred.In addition, if the physical addresses of the process are also similarlyregistered in addition to the registration of the physical address atwhich the ECC error has actually occurred, the access sequence can beconfirmed.

Moreover, since a state hold flag is recorded in the error block table,it can be confirmed whether or not the data remain as in the physicalblock in which the error has occurred, thus being useful for theinterpretation of the error occurrence. In this embodiment, the physicalblock in which the ECC has actually occurred can be identified byretracing from the physical block that is currently used.

(Embodiment 2)

In a second embodiment, a physical block in which an ECC error hasoccurred can be identified by registering address information of an ECCerror in a redundant part of pages prepared in a NAND type flash memory.

FIG. 8 shows the configuration of a page prepared in a memory card ofthe second embodiment.

The NAND type flash memory 10 has several blocks as deletion units, andeach block has several pages as write units. The page of the NAND typeflash memory 10, as shown in FIG. 8, includes a data part 15 in whichordinary data are stored, and a redundant part 16. The redundant part 16has an area 16A, where an ECC code is stored, and an empty area 16B. Inthe second embodiment, a physical block address, at which an ECC errorhas occurred, is stored in the empty area 16B of the redundant part 16of the page. Therefore, since the physical block address, at which theECC error has occurred, is registered in the empty area 16B included inthe page redundant part 16, the controller 20 manages the physical blockaddress at which the ECC error has occurred.

In case a readout request is issued to the NAND type flash memory 10from the memory controller 20 and an ECC error has occurred in data readout of the NAND type flash type memory 10, the physical block address,in which the ECC error has occurred, is registered in the page redundantpart 16.

On the other hand, for example, in case an ECC error has occurred by adirect readout request from a host device, a physical block addresscorresponding to its logical block address is not particularlyregistered. The reason for this is that if the same logical blockaddress is read out, an ECC error occurs, while if a table (logicaltransformation table) for associating logical block addresses andphysical block addresses is confirmed, the physical block address, atwhich the ECC error has occurred, can be identified.

However, for example, instead of the request from the host device, whena readout is implemented by a data copy through background processing,etc., from the memory controller 20 and an ECC error is detected, aregistration processing of the physical block address is implementedaccording to a flow chart shown in FIG. 9.

First, the controller 20 issues a readout request to a page, hereinafterreferred to as a copy source page, in the NAND type flash memory 10(step S21). Next, whether or not there is an ECC error in the data readout of the copy source page is decided (step S22). Specifically, thecontroller 20 decides whether or not an uncorrectable error is includedin the read data and whether or not a flag showing that the ECC erroroccurred in the past is set among flags that are managed by the firmwarefor the controller 20. Next, in at least the case in which theuncorrectable error is included or the case in which the flag is set, itis decided that the ECC error has occurred.

If no ECC error occurs in the data read out of the copy source page, theregistration processing is finished. On the other hand, if the ECC erroroccurs in the data read out of the copy source page, the controller 20decides whether or not the physical block address, at which the ECCerror occurred in the past, is registered in the redundant part 16 ofthe copy source page (step S23).

If no physical block address is registered in the redundant part 16 ofthe copy source page, the physical block address of the copy source pageis registered in the empty area 16B of the redundant part 16 of a copydestination page (step S24), finishing the processing.

On the other hand, at step S23, if the physical block address hasalready been registered in the redundant part 16 of the copy sourcepage, the controller 20 decides whether or not the ECC error thatoccurred in the read data is an actual ECC error containing anuncorrectable error due to a bit error excess. In other words, in thiscase, when the ECC code is recalculated for the read data copied fromthe physical block containing the ECC error and an error is detected,the controller 20 decides whether or not the data include anuncorrectable error. Next, the controller 20 decides among the flagsthat are managed by the firmware, whether or not a flag showing that theECC error occurred in the past, is set. When only the read data includesthe uncorrectable error (i.e., ECC error did not occur in the past) isthe error decided as an actual ECC error (step S25).

If the ECC error occurred is an actual ECC error, the physical blockaddress registered in the redundant part 16 of the copy source page andthe physical block address of the copy source page are registered in theempty area 16B of the redundant part 16 of the copy destination page. Inother words, the physical block address, which has already beenregistered in the redundant part 16 of the copy source page, iscontinuously registered in the empty area 16B of the redundant part 16of the copy destination page, and the physical block address at whichthe error occurs currently is registered (step S26), finishing theprocessing.

On the other hand, at step S25, if the ECC error occurred is not anactual ECC error, the physical block address registered in the redundantpart 16 of the copy source page is registered in the empty area 16B ofthe redundant part 16 of the copy destination page (step S27), finishingthe processing.

In this manner, the processing for registering a physical block addressin the redundant part of the page in the case in which an ECC erroroccurs is finished.

As mentioned above, even if a physical block containing a page, in whicha physical block address has already been registered in a redundantpart, is copied in another physical block, there is a possibility thatan actual ECC error due to a bit error has occurred in the physicalblock which is a copy destination. In this case, it is also necessary toregister the physical block address, at which the ECC error occurscurrently, as the second address in addition to the first physical blockaddress in which the ECC error occurred in the past.

Therefore, for example, even if the physical block in which the ECCerror has occurred is copied many times in another physical block, thephysical block in which the ECC error has actually occurred can beidentified.

In addition, when the physical block address is registered in theredundant part of a page of the NAND type flash memory 10, as part ofanother process, all the physical block addresses where an error hasoccurred may be continuously registered in the redundant part of thepage.

FIG. 10 is a flow chart showing the case in which all physical addressesat which an error has occurred are registered in the redundant part of apage.

In FIG. 9, in case the ECC error is not an actual ECC error, theprocessing has been finished without registering its physical blockaddress in the redundant part 16 of the page. However, in the processingshown in FIG. 10, whether or not an ECC error occurs in read data isdecided (step S22). If the ECC error occurs, the physical block addressregistered in the redundant part of the copy source page, where the ECCerror has occurred, and the physical block address of the copy sourcepage is registered in the redundant part of the copy destination page,regardless of whether or not the error is ECC error (step S26).

In this manner, the physical block addresses of the process as well asthe physical block address where the ECC error actually occurred may besimilarly registered. Therefore, even in the case in which the ECC errordata are repeatedly copied, the access history of the physical blockaddress at which the error has occurred can be understood, thus beingable to use the history as a clue for interpreting the error. In otherwords, in this case, the history of all the addresses after theoccurrence of the ECC error can be tracked, thus being able to be usefulfor the interpretation of the error.

According to the second embodiment, since a physical address at which anerror has occurred is registered in the redundant part of a page in ablock of the NAND type flash memory, the physical block in which the ECCerror actually occurred can be identified. In addition, if the physicaladdresses of the process are similarly registered in addition to thephysical address where the ECC error actually occurred, the accesssequence can also be confirmed. In this embodiment, the physical blocksin which the ECC error has actually occurred can be retraced andidentified from the physical block that is currently used.

As explained above, in the embodiments, the physical address at which anECC error has occurred is managed by the system table in the NAND typeflash memory as an error block table, or the physical address at whichthe ECC error has occurred is managed by the redundant part of a page ofthe NAND type flash memory, so that even if the ECC error occurs at thetime of data copy, etc., in the background processing of a controller aswell as a request from a host device, the physical address where the ECCerror has actually occurred can be identified.

While certain embodiments have been described, these embodiments havebeen presented by way of example only, and are not intended to limit thescope of the inventions. Indeed, the novel embodiments described hereinmay be embodied in a variety of other forms; furthermore, variousomissions, substitutions and changes in the form of the embodimentsdescribed herein may be made without departing from the spirit of theinventions. The accompanying claims and their equivalents are intendedto cover such forms or modifications as would fall within the scope andspirit of the inventions.

What is claimed is:
 1. A storage device comprising: a nonvolatile memory having multiple blocks, each block including multiple pages; an error correcting circuit that is configured to detect and correct an error in data read out from a block of the nonvolatile memory at a location referenced by a logical address and issue a notification of an error occurrence when the error cannot be corrected; and a processing circuit for controlling the operations of the error correcting circuit and the nonvolatile memory, wherein when the notification of the error occurrence is received from the error correcting circuit for the data read out of a page in a first block of the nonvolatile memory, the processing circuit records a physical address of the page in the first block in a free part of a page in a second block of the nonvolatile memory into which the read data are to be written.
 2. The storage device according to claim 1, wherein when the notification of the error occurrence is received from the error correcting circuit, the processing circuit further records the physical address, which has been registered in a free part of the page in the first block, in the free part of the page in the second block.
 3. The storage device according to claim 1, wherein when the notification of the error occurrence is received from the error correcting circuit, the processing circuit records the physical address of the page in the first block in the free part of the page in the second block of the nonvolatile memory into which the read data are written without determining whether or not the error is an actual error.
 4. The storage device according to claim 1, wherein when the notification of the error occurrence is received from the error correcting circuit, the processing circuit determines whether or not the error is an actual error and records the physical address of the page in the first block in the free part of the page in the second block of the nonvolatile memory into which the read data are written if the error is an actual error.
 5. The storage device according to claim 4, wherein the processing circuit determines that the error is not an actual error if the physical address of the page in the first block is indicated as associated with an uncorrectable error occurrence in the past.
 6. The storage device according to claim 4, wherein the processing circuit determines that the error is an actual error if the physical address of the page in the first block is not indicated as associated with an uncorrectable error occurrence in the past.
 7. The storage device according to claim 1, wherein when the notification of the error occurrence is received from the error correcting circuit for the data read out of the page in the first block of the nonvolatile memory, the processing circuit records a physical address recorded in a free part of the page in the first block in the free part of the page in the second block of the nonvolatile memory into which the read data are to be written. 